import os
from pathlib import Path

# Database type selection: "mysql", "sqlite"
DB_TYPE = "sqlite"

# Database configuration
if DB_TYPE == "mysql":
    DB_CONFIG = {
        'URI': 'mysql+pymysql://root:123456@192.168.202.128/demo',
        'TRACK_MODIFICATIONS': False
    }
elif DB_TYPE == "sqlite":
    DB_PATH = os.path.join(os.path.dirname(__file__), "app.db")
    DB_CONFIG = {
        "URI": f"sqlite:///{DB_PATH}",
        "TRACK_MODIFICATIONS": False
    }

# 知识库文档存储选择： "minio" 或 "local"
STORAGE_BACKEND = "local"
LOCAL_STORAGE_PATH = "uploads"

# MinIO configuration
MINIO_CONFIG = {
    'endpoint': '192.168.202.128:9000',
    'access_key': 'FgIM0Od1wYxWzNcI5Er9',
    'secret_key': 'FC0L2VUFJATK8rNs1Qpi4ViOhfXhXxaGVR6beX6e',
    'secure': False,
    'bucket_name': 'documents'
}

# ChromaDB configuration
CHROMA_CONFIG = {
    'path': './chroma_db',
    'collection_name': 'document_segments'
}

# 模型类型选择配置
MODEL_TYPE = 'ollama'  # 可选值: 'ollama', 'vllm' 或 'openai' 或 'medai'
LOCAL_EMBEDDING = False  # 是否使用本地嵌入模型

# 本地Embedding模型配置
LOCAL_EMBEDDING_CONFIG = {
    'model_name': 'all-MiniLM-L6-v2',  # 默认使用多语言MiniLM模型
    'model_path': 'data/models/all-MiniLM-L6-v2',  # 本地模型文件路径
    'device': 'cpu',  # 使用CPU进行推理
    'normalize_embeddings': True  # 是否对embedding进行归一化
}

MODEL_NAME = "qwen3:0.6b"   # 默认模型
EMBEDDING_MODEL = "bge-m3:latest"   # 默认嵌入模型

# Ollama 配置
OLLAMA_CONFIG = {
    'base_url': 'http://localhost:11434',  # Ollama服务地址
    'default_model': 'qwen3:0.6b',  # 默认模型
    'timeout': 60,  # 请求超时时间（秒）
    'max_tokens': 2048,  # 最大生成token数
    'temperature': 0.7,  # 温度参数
    'top_p': 0.9,  # top_p参数
    'embedding_model': "bge-m3:latest",  # 默认嵌入模型
    'auto_detect_model': False,  # 是否自动检测可用模型
    'llm_models': [  # 预配置的LLM模型列表
        'deepseek-r1:1.5b',
        'qwen3:0.6b'
    ],
    'embed_models': [  # 预配置的嵌入模型列表
        'bge-m3:latest'
    ]
}

# VLLM 配置
VLLM_CONFIG = {
    'base_url': 'http://localhost:8000',  # VLLM服务地址
    'default_model': 'qwen2.5:3b',  # 默认模型
    'timeout': 60,  # 请求超时时间（秒）
    'max_tokens': 2048,  # 最大生成token数
    'temperature': 0.7,  # 温度参数
    'top_p': 0.9,  # top_p参数
    'embedding_model': "bge-m3:latest",  # 默认嵌入模型
}

# OpenAI 配置
OPENAI_CONFIG = {
    'base_url': 'http://192.168.202.128:3000/v1',  # OpenAI API地址
    'default_model': 'qwen2.5:3b',  # 默认模型
    'timeout': 60,  # 请求超时时间（秒）
    'max_tokens': 2048,  # 最大生成token数
    'temperature': 0.7,  # 温度参数
    'top_p': 0.9,  # top_p参数
    'embedding_model': "bge-m3:latest",  # 默认嵌入模型
    'api_key': 'sk-dlrRsAGoZm2IesTN181876Bc78Dc495dB97fB77bF62366D7',  # API密钥
    'auto_detect_model': False,  # 是否自动检测可用模型
    'llm_models': [  # 预配置的LLM模型列表
        'deepseek-r1:1.5b',
        'qwen2.5:3b'
    ],
    'embed_models': [  # 预配置的嵌入模型列表
        'bge-m3:latest'
    ]
}

# 新模型服务平台配置
MEDAI_CONFIG = {
    'base_url': 'https://openai.imedicalai.com/imedway-ai/app-api/rag/open/v1/app/chat',
    'api_key': 'sk-6a3c7dc065d24272ba27d76bd978ad44a',
    'app_id': '2b9225009401d59b4a818df6bd41124a',
    'timeout': 120,
    'temperature': 0.2
}

# 上传文件配置
UPLOAD_FOLDER = "uploads"
ALLOWED_EXTENSIONS = {'txt', 'pdf', 'doc', 'docx'}

# 指标查询Agent配置
SUBJECTS_COLLECTION = 'subjects'
INDICATORS_COLLECTION = 'indicators'
DIMENSIONS_COLLECTION = 'dimensions'
CODE_TABLES_COLLECTION = 'code_tables'

# MDR指标服务配置
# http://192.168.77.131:40002/mdrbase-api/prod/rpt-arc/api
MDR_CONFIG = {
    'base_url': 'http://114.242.246.245:18095/mdrbase-api/prod/rpt-arc/api',
}

VN_CONNECT_DB_TYPE = 'mysql'

# Vanna 连接 mysql 配置
VN_MYSQL_CONFIG = {
    'host': '192.168.202.128',
    'dbname': 'demo',
    'user': 'root',
    'password': '123456',
    'port': 3306
}

VN_IRIS_CONFIG = {
    'host': '114.242.246.227',
    'dbname': 'mdr',
    'user': '_system',
    'password': 'MDR@iris',
    'port': 51773
}

AUTHORIZATION_DB_TYPE = 'openGauss'

# 指标以及权限配置数据库 openGauss 配置
AUTHORIZATION_DB_CONFIG = {
    'host': '140.143.130.126',
    'port': 40008,
    'dbname': 'dmp_dev_1',
    'user': 'dmp_dev',
    'password': 'dmp@1234',
}

# 指标以及权限配置数据库 mysql 配置
AUTHORIZATION_DB_MYSQL_CONFIG = {
    'host': 'localhost',
    'dbname': 'demo1',
    'user': 'root',
    'password': 'Qqs20001110',
    'port': 3306
}